package com.hst.capacity.domain.service;

import com.hst.capacity.domain.model.entity.driver.DriverCarEntity;
import com.hst.capacity.domain.model.entity.driver.DriverEntity;
import com.hst.capacity.domain.model.entity.vehicle.VehicleEntity;
import com.hst.capacity.domain.model.entity.vehicle.VehicleInsuranceEntity;
import com.hst.capacity.domain.model.entity.vehicle.VehicleLicenseEntity;
import com.hst.capacity.domain.model.request.driver.DriverAddParam;
import com.hst.capacity.domain.model.request.driver.DriverSearchParam;
import com.hst.capacity.domain.model.request.vehicle.*;
import com.hst.capacity.domain.model.response.PagingResultVO;

import java.util.List;

/**
 *  "汽车管理"领域服务接口
 *
 * */
public interface VehicleService {

    /**
     * 添加车辆
     * @param param
     * @return
     */
    VehicleEntity addVehicle(VehicleAddParam param);

    /**
     * 绑定车辆关系(暂废弃)
     * @param param
     * @return
     */
    DriverCarEntity addDriverCar(VehicleRelationParam param);

    /**
     * 条件检索车辆
     * @param param
     * @return
     */
    PagingResultVO search(VehicleSearchParam param);

    /**
     * 添加车辆保险
     * @param param
     * @return
     */
    VehicleInsuranceEntity addInsurance(VehicleAddInsuranceParam param);

    /**
     * 添加车辆资质
     * @param param
     * @return
     */
    VehicleLicenseEntity addCertificate(VehicleAddCertificateParam param);

    /**
     * 编辑查询车辆基本信息
     * @param idVehicle
     * @return
     */
    VehicleAddParam vehicleEditSelectBase(String idVehicle);

    /**
     * 联想查询车牌号
     * @param idFranchisee
     * @return
     */
    List driverAssociateVehicle(String idFranchisee,String str);

    Boolean vehicleDelete(String id);

    boolean verifyVehicleType(Integer driverVehicleType, Integer orderVehicleType);

}
